const WebSocket=require('ws');//ws提供WebSockey模块

const WebSocketServer=WebSocket.Server; //应用Server类，提供服务器方面的操作

const wss=new WebSocketServer({port:3000}); //将端口3000实例化

wss.on('connection',function(ws)  //响应connection事件。在有WebSocket请求介入时，会调用该方法处理请求。
{
    //传入的ws参数,表示当前WebSocket链接。
    ws.on('message',function(message)  //响应message事件。对于每个WebSocket连接都要绑定相关不同的处理函数。
    {
        //当前端传来数据时。
        console.log(`[SERVER] Received: ${message}`);
        setTimeout( ()=>
        {
            ws.send(`What's your name?`,(err)=>
            {
                if(err)
                {
                    console.log(`[SERVER] error:${err}`);
                }
            });
        },1000);
    });
});
console.log('ws server started at port 3000...');


//客户端测试
let count=0;
let ws = new WebSocket('ws://localhost:3000'); //服务器响应请求事件的函数参数。

ws.on('open',function()//WebSocket开启事件处理函数。连接打开后发送一个 Hello! 的message。
{
    console.log(`[CLIENT] open()`);
    ws.send('Hello!');
});
ws.on('message',function(message) //接受到服务传来的消息时，进行处理。
{
    console.log(`[CLIENT] Received:${message}`);
    count++;
    if(count>3)
    {
        ws.send('3 times over!GoodBye!');
        ws.close();
    }
    else
    {
        setTimeout(()=>
        {
            ws.send(`Hello,I am Mr No.${count}!`);
        },1000);
    }
});